package com.example.basic02;

// todo jvm 需要补一下。
// 架构设计面试题

/**
 * 秒杀
 * 短链接
 * 红包系统
 * 分布式Id
 * 分布式限流
 * 分布式定时任务
 * 新浪微博怎么推送微博
 * 大文件有限内存排序
 *
 * 1、情景题：如果一个外卖配送单子要发布，现在有200个骑手都想要接这一单，如何保证只有一个骑手接到单子？
 * 这个可以用redis的lpush rpop来实现。
 *
 * 2、场景题：美团首页每天会从10000个商家里面推荐50个商家置顶，每个商家有一个权值，你如何来推荐？第二天怎么更新推荐的商家？
 * 这个可以用堆排，第二天更新推荐的可以在要更新之前的时候在redis做计算操作，然后放数据库做个同步就行了。
 *
 * 3、场景题：微信抢红包问题
 * 悲观锁，乐观锁，存储过程放在mysql数据库中。
 *
 * 4、场景题：1000个任务，分给10个人做，你怎么分配，先在纸上写个最简单的版本，然后优化。
 * 全局队列，把1000任务放在一个队列里面，然后每个人都是取，完成任务。
 * 分为10个队列，每个人分别到自己对应的队列中去取务。
 *
 * 5、场景题：保证发送消息的有序性，消息处理的有序性。
 * 给消息加一个header，识别一下header的syn就行
 *
 * 6、如何把一个文件快速下发到100w个服务器
 * 边下发，边复制
 *
 * 7、给每个组分配不同的IP段，怎么设计一种结构使的快速得知IP是哪个组的?
 *
 * 8、10亿个数，找出最大的10个。
 * 建议一个大小为10的小根堆。
 *
 * 9、有几台机器存储着几亿淘宝搜索日志，你只有一台2g的电脑，怎么选出搜索热度最高的十个搜索关键词？
 * 分bucket，每个bucket找出频次最高的10个，总体用分治算法做。
 *
 * 10、分布式集群中如何保证线程安全？
 * 分布式锁，意在让分布式多线程的环境针对一个共享资源一次性只会有一个线程获取到锁里的资源。
 * 分布式锁的实现一般就是redis和zk居多。redis设置一下expire time就行。
 *
 * 11、10万个数，输出从小到大？
 * 先划分成多个小文件，送进内存排序，然后再采用多路归并排序。
 *
 * 12、有十万个单词，找出重复次数最高十个？
 * map<String,Integer> 字符串，频次，然后堆排。
 */
public class JvmDemo {
}
